/**
 *	@file	an_puzzle_sys.h
 *	@brief	フォトアルバム　ローカルヘッダ
 *	@author	Miyuki Iwasawa
 *	@date	08.05.28
 */

#ifndef __H_AN_PUZZLE_SYS_H__
#define __H_AN_PUZZLE_SYS_H__

#include "system/selbox.h"
#include "system/wordset.h"
#include "system/touch_subwindow.h"

#include "an_puzzle_def.h"

typedef union _PANEL{
	struct{
		u8 no:5;
		u8 rot:2;
		u8 rock:1;
	};
	u8 dat;
}PANEL;

typedef struct _PANEL_WK{
	u8	x,y;
	u8	rot;
	u8	rock;
	CLACT_WORK_PTR	act;		///<アクター
}PANEL_WK;

typedef struct _AN_PUZZLE_MSG{
	MSGDATA_MANAGER*	man;

	WORDSET* wset;		///<ワーク

	STRBUF	*tmp;
	STRBUF	*back;
	STRBUF	*poke[MIDX_POKE_MAX];
	STRBUF	*exp[MIDX_EXP_MAX];
}AN_PUZZLE_MSG;

typedef struct _AN_PUZZLE_WORK{
	int	heapID;
	int	key_mode;
	int	seq;
	u16	sub_seq;
	u16 sub_ct;
	AN_PUZZLE_PARAM* param;

	GF_BGL_INI* bgl;

	u8	state;		///<アプリステート
	u8	level;		///<パズルレベル
	u8	btnanm_f;	///<バックボタンアニメ待ち
	u8	tidx;		///<ターゲットのパネルindex

	s16	cpos_x;		///<カーソルポジション
	s16	cpos_y;		///<カーソルポジション
	u8	opos_x;		///<カーソルの1フレーム前の位置
	u8	opos_y;		///<カーソルの1フレーム前の位置
	u8	gpos_x;		///<カーソルのグリッドポジション
	u8	gpos_y;		///<カーソルのグリッドポジション

	u8	msg_idx;	///<メッセージ再生ID
	u8	msg_spd;	///<メッセージスピード
	u8	win_type;	///<ウィンドウタイプ

	u8	is_clear;	///<クリアフラグ
	AN_PUZZLE_MSG		msg;

	GF_BGL_BMPWIN		win[WIN_MAX];	///<Bmpウィンドウ
	TOUCH_SW_SYS		*ynbtn_wk;	///<YesNoボタンワーク
	PALETTE_FADE_PTR	palAnm;		///<パレットアニメワーク

	CATS_SYS_PTR		pActSys;	///<セルアクターシステム
	CATS_RES_PTR		pActRes;	///<セルアクターリソース
	CLACT_WORK_PTR		pAct[AN_PUZZLE_ACTMAX];		///<アクター

	NNSG2dScreenData*	pSParts;	//<パーツスクリーンポインタ
	void*				pSPartsBuf;

	PANEL_WK			panel[PANEL_MAX];
	PANEL_WK			*target;
}AN_PUZZLE_WK;

typedef struct _BACKBTN_TASK_WK{
	AN_PUZZLE_WK* paw;
	u8			ct;
	u8			seq;
}BACKBTN_TASK_WK;

#endif	//__H_AN_PUZZLE_SYS_H__
